SUBROUTINE InfiltrationInit &
!
( inifile, soilMoisture, soilDepth )
IMPLICIT NONE
!Arguments with intent(in):
CHARACTER (LEN = *), INTENT(IN) :: inifile
TYPE (grid_real), INTENT (IN) :: soilMoisture
TYPE (grid_real), INTENT (IN) :: soilDepth
!local declarations:
TYPE (IniList) :: infiltini
!--------------------------------------end of declarations---------------------
!open and read configuration file
CALL IniOpen (inifile, infiltini)
!read infiltration model
infiltrationModel = IniReadInt ('model', infiltini)
!read number of subdivisions of soil layer
soilDivisions = IniReadInt ('ross-divisions', infiltini)
!check soil division and infiltration model
IF (soilDivisions > 1 .AND. infiltrationModel == SCS_CN .OR. &
soilDivisions > 1 .AND. infiltrationModel == PHILIPEQ .OR. &
soilDivisions > 1 .AND. infiltrationModel == GREEN_AMPT ) THEN
CALL Catch ('warning', 'Infiltration', &
'Infiltration model requires one subdivision of soil layer, divisions forced to 1')
soilDivisions = 1
END IF
!read parameter assigning method
parameterAssigningMethod = IniReadInt ('parameter-assigning-method', infiltini)
IF (parameterAssigningMethod == FROM_DB) THEN
!check if all necessary info are defined
IF (.NOT. KeyIsPresent ('soil-types-file', infiltini) ) THEN
CALL Catch ('error', 'Infiltration', &
'missing ''soil-types-file'' keyword in configuration file')
END IF
IF (.NOT. SectionIsPresent ('soil-type-map', infiltini) ) THEN
CALL Catch ('error', 'Infiltration', &
'missing ''soil-type-map'' section in configuration file')
END IF
!set parameter maps
CALL SetParametersFromDB (infiltini, infiltrationModel)
ELSE
CALL SetParametersFromFile (infiltini, infiltrationModel)
END IF
!used by Philip model
IF (infiltrationModel == PHILIPEQ .OR. &
infiltrationModel == GREEN_AMPT ) THEN
CALL NewGrid (cuminf, mask, 0.)
CALL NewGrid (ism, mask, 0.)
END IF
!used by SCS-CN
IF (infiltrationModel == SCS_CN) THEN
CALL NewGrid (raincum, mask, 0.)
END IF
!when Richards equation solution is required, initialize Ross'parameters
IF (infiltrationModel == ROSS_BC) THEN
CALL SetRichardsBC (mask, ksat, thetas, thetar, psdi, psic, &
soilDepth, soilMoisture, infiltini, soilDivisions)
END IF
! Configuration terminated. Deallocate ini database
CALL IniClose (infiltini)
RETURN
END SUBROUTINE InfiltrationInit